package movepaint.view.menuComponents;

import javax.swing.JMenu;
import javax.swing.ImageIcon;
import javax.swing.KeyStroke;

/**
 * Classe qui permet de créer un menu avec un champ texte
 *	et une touche raccourci.
 *
 * @author Paulino A.
 * @version 1.0
 **/
public class JMenuRaccourci extends JMenu {

	/**
	 *	Constructeur faisant appel au constructeur de la super
	 *		classe JMenu. Il affiche un texte et lui associe une image.
	 **/
	public JMenuRaccourci(String text,ImageIcon image) {
		super(text);
		setIcon(image);
	}

	/**
	 *	Constructeur faisant appel au constructeur de la super
	 *		classe JMenu mais qui permet de lui ajouter un message info bulle.
	 *
	 *	@param textAide
	 *			Le texte a afficher dans l'info bulle.
	 **/
	public JMenuRaccourci(String text,ImageIcon image,String textAide) {
		this(text,image);
		setToolTipText(textAide);
	}

	/**
	 *	Constructeur qui prend en argument un champ texte,
	 *	une image et une touche raccourci avec le masque associé.
	 *	<br>
	 *	<u>Exemple:</u> Creation d'un menu 'Ouvrir' avec l'image 'open.gif'
	 *		et la touche raccourci: CTRL+O:
	 *	<br>
	 *	<code>_menuOuvrir = new JMenuRaccourci("Ouvrir",new ImageIcon("open.gif"),
	 *													KeyEvent.VK_O,KeyEvent.CTRL_MASK);
	 *
	 *	@param text
	 *			Le texte de l'élément du menu.
	 *	@param image
	 *			L'image associée à l'élément.
	 *	@param raccourci
	 *			La touche raccourci.
	 *	@param mask
	 *			Le masque associé à la touche raccourci.
	 *
	 **/
	public JMenuRaccourci(String text,ImageIcon image,
								int raccourci,int mask) {
		this(text,image);
		setAccelerator(KeyStroke.getKeyStroke(raccourci,mask));
	}

	/**
	 *	Constructeur qui prend en argument un champ texte,
	 *		et une touche raccourci avec le masque associé.
	 *	<br>
	 *	<u>Exemple:</u> Creation d'un menu 'Ouvrir' avec la touche raccourci: CTRL+O:
	 *	<br>
	 *	<code>_menuOuvrir = new JMenuRaccourci("Ouvrir",KeyEvent.VK_O,KeyEvent.CTRL_MASK);
	 *
	 *	@param text
	 *			Le texte de l'élément du menu.
	 *	@param raccourci
	 *			La touche raccourci.
	 *	@param mask
	 *			Le masque associé à la touche raccourci.
	 *
	 **/
	public JMenuRaccourci(String text,int raccourci,int mask) {
		super(text);
		setAccelerator(KeyStroke.getKeyStroke(raccourci,mask));
	}

	/**
	 *	Constructeur qui prend en argument un champ texte,
	 *		et une touche raccourci avec le masque associé.
	 *	<br>
	 *	Le dernier argument permet d'ajouter un message info bulle à l'élément.
	 *	<br>
	 *	<u>Exemple:</u> Creation d'un menu 'Ouvrir' avec la touche raccourci: CTRL+O
	 *		et l'infobulle :'Ouvrir un fichier...':
	 *	<br>
	 *	<code>_menuOuvrir = new JMenuRaccourci("Ouvrir",KeyEvent.VK_O,KeyEvent.CTRL_MASK,
	 *													'Ouvrir un fichier...');
	 *
	 *	@param text
	 *			Le texte de l'élément du menu.
	 *	@param raccourci
	 *			La touche raccourci.
	 *	@param mask
	 *			Le masque associé à la touche raccourci.
	 *	@param textAide
	 *			Le texte a afficher dans l'info bulle.
	 **/
	public JMenuRaccourci(String text,int raccourci,int mask,String textAide) {
		this(text,raccourci,mask);
		setToolTipText(textAide);
	}

	/**
	 *	Constructeur qui prend en argument un champ texte,
	 *	une image et une touche raccourci avec le masque associé.
	 *	<br>
	 *	Le dernier argument permet d'ajouter un message info bulle à l'élément.
	 *	<br>
	 *	<u>Exemple:</u> Creation d'un menu 'Ouvrir' avec l'image 'open.gif',
	 *		la touche raccourci: CTRL+O et l'infobulle :'Ouvrir un fichier...':
	 *	<br>
	 *	<code>_menuOuvrir = new JMenuRaccourci("Ouvrir",new ImageIcon("open.gif"),
	 *													KeyEvent.VK_O,KeyEvent.CTRL_MASK,
	 *													'Ouvrir un fichier...');
	 *	@param text
	 *			Le texte de l'élément du menu.
	 *	@param image
	 *			L'image associée à l'élément.
	 *	@param raccourci
	 *			La touche raccourci.
	 *	@param mask
	 *			Le masque associé à la touche raccourci.
	 *	@param textAide
	 *			Le texte a afficher dans l'info bulle.
	 **/
	public JMenuRaccourci(String text,ImageIcon image,
								int raccourci,int mask,String textAide) {
		this(text,image,raccourci,mask);
		setToolTipText(textAide);
	}
}